The following relates generally to data transfer between devices and more specifically to data transfer techniques for multiple devices on a shared bus.
Memory devices are widely used to store information in various electronic devices such as computers, wireless communication devices, cameras, digital displays, and the like. Information is stored by programming different states of a memory device. For example, binary devices have two states, often denoted by a logic “1” or a logic “0.” In other systems, more than two states may be stored. To access the stored information, the electronic device may read, or sense, the stored state in the memory device. To store information, the electronic device may write, or program, the state in the memory device.
Multiple types of memory devices exist, including random access memory (RAM), read only memory (ROM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), ferroelectric RAM (FeRAM), magnetic RAM (MRAM), resistive RAM (RRAM), flash memory, and others. Memory devices may be volatile or non-volatile. Non-volatile memory, e.g., flash memory, can store data for extended periods of time even in the absence of an external power source. Volatile memory devices, e.g., DRAM, may lose their stored state over time unless they are periodically refreshed by an external power source. Certain aspects of volatile memory may offer performance advantages, such as faster read or write speeds, while aspects of non-volatile, such as the ability to store data without periodic refreshing, may be advantageous.
When transferring data between devices, a memory controller may read data from a source device to data storage within the memory controller, and then write the data to a target device from the data storage within the memory controller. Additionally, in many cases a memory controller may have different types of interfaces for different storage devices, such as a volatile memory and a non-volatile memory. Such designs also may result in the memory controller being fully involved to facilitate the transfer of data. Accordingly, it may be beneficial to provide techniques that allow for enhanced memory controller efficiency and data transfer efficiency between different electronic devices.